package com.biz.primus.model.misc.vo;

import com.biz.primus.model.misc.enums.MessageType;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.util.concurrent.TimeUnit;

/**
 * @author yanweijin
 * @date 2017/6/10
 */
@Getter
@Setter
public class RuleVo implements Serializable {

    /**
     * ruleKey : 唯一的规则key
     * ([keyName]/[rule version]/[maxSent]/[time unit])
     * eg: (limit-v/v1/5/hours)
     * 不能使用逗号
     */
    private String ruleKey;

    private String includeKeyword;

    private TimeUnit timeUnit;

    private Integer timeLength;

    private Integer maxSent;

    /**
     * 只有包含在内时受限制
     */
    private String[] onlySignature;

    /**
     * 如果有值,只有消息类型一致时受限制,如为空则对所有类型有效
     */
    private MessageType onlyMessageType;

    /**
     * 规则描述
     */
    private String desciption;


    /**
     * 兼容的规则,如果有值,会在计算已发送短信时,算上这些规则的发送记录
     * 例如,我发送3条短信,匹配了limit/5/hour这个规则(每小时5条)
     * 然后我新增了一条规则limit2/3/hour(每小时3条),兼容limit/5/hour
     * 在时间范围内,系统在统计受规则约束的短信条数时,会将limit/5/hour的2条一起计算在内
     */
    private String[] compatibleRule;

    public long getTimeMillis() {
        return timeUnit.toMillis(timeLength);
    }


}
